x

Range Sum of BST

Leetcode #938 | Easy | Деревья | BST | DFS

Идея

DFS. Но с оговоркой. Если текущая нода меньше low, то возвращаем только сумму правого поддерева, аналогично если больше high, то только сумма левого поддерева. Иначе возвращаем обе суммы + node.val

Big-O

  • Время O(N)
  • Память O(H)

N - всего узлов, H - высота дерева

Код

class Solution {
    public int rangeSumBST(TreeNode root, int low, int high) {
        if (root == null) return 0;
        if (root.val < low) return rangeSumBST(root.right, low, high);
        if (root.val > high) return rangeSumBST(root.left, low, high);
        return root.val + rangeSumBST(root.left, low, high) + rangeSumBST(root.right, low, high);
    }
}
Left-click: follow link, Right-click: select node, Scroll: zoom
x